package com.cskaoyan.javase.oop1._3memory;

/**
 * 对象中成员变量的赋值(以下两种方式,都是在new对象过程中的赋值方式)
 *      1.成员变量具有默认初始化,而且默认初始化一定会执行,一定在所有手动赋值手段之前执行,手动赋值一定是覆盖掉默认值.
 *      2.成员变量的显式赋值,在定义成员变量时,直接给出该变量一个取值
 *
 *  很明显,默认初始化永远最先执行,那么显式赋值就会覆盖掉默认初始化的默认值.
 *
 *  当然,成员变量也可以在new对象完成之后赋值,比如"对象名.",甚至还可以依赖于调用成员方法来进行赋值.
 *  这些创建对象完毕后的赋值方式,谁最后执行,谁就是最终结果.
 *
 * @since 10:13
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        A a = new A();
        a.setNum(888);
        a.num = 777;
        System.out.println(a.num);
    }
}

class A {
    // 显式赋值num
    int num = 666;

    public void setNum(int a) {
        num = a;
    }
}
